package model

import (
	"fmt"
	"io"
	"os"
	"path/filepath"
)

// GenerateConfigTemplate 生成配置文件模板
func GenerateConfigTemplate(outputPath string) error {
	// 模板内容
	templateContent := `[domain]
# 设置域名，例如 liumou.site
Domain="liumou.site"
# 预设字段,留空即可
Sub=""
# 设置IPV4专属子域名，例如 ipv4
Sub4="ddns4"
# 设置IPV6专属子域名，例如 ipv6
Sub6="ddns6"
# 设置备注
Remark="模板"
# Type 设置IP类型
## ALL(双栈)
## A(只更新IPV4)
## AAAA(只更新IPV6)
Type="A"
[login]
# 设置Key
Key="Keys"
# 设置ID
Id="Ids"
[option]
# 设置是否删除
# true:删除
# false:不删除
Delete=false
`

	// 如果未指定输出路径，使用默认路径
	if outputPath == "" {
		outputPath = "ddns.toml"
	}

	// 确保输出目录存在
	dir := filepath.Dir(outputPath)
	if dir != "." && dir != "" {
		err := os.MkdirAll(dir, 0755)
		if err != nil {
			return fmt.Errorf("创建目录失败: %v", err)
		}
	}

	// 检查文件是否已存在
	if _, err := os.Stat(outputPath); err == nil {
		return fmt.Errorf("文件已存在: %s", outputPath)
	}

	// 创建并写入模板文件
	file, err := os.Create(outputPath)
	if err != nil {
		return fmt.Errorf("创建文件失败: %v", err)
	}
	defer file.Close()

	_, err = io.WriteString(file, templateContent)
	if err != nil {
		return fmt.Errorf("写入文件失败: %v", err)
	}

	return nil
}

// GetDefaultTemplatePath 获取默认模板文件路径
func GetDefaultTemplatePath() string {
	return "ddns.toml"
}